package files;
import courses.Course;
import roles.Admin;
import roles.Professor;
import roles.Student;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 文件读取流
 */
public class FileInfoReader {

    /**
     * 读取课程文件信息
     * @return
     */
    public static List<Course> getFileCourseInfo(){
        List<Course> courseList = new ArrayList<>();
        // 定义文件路径
        String filePath = "src/courseInfo.txt";
        try {
            // 创建文件读取对象
            FileReader fileReader = new FileReader(filePath);
            // 创建缓冲读取对象
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            String line;
            // 逐行读取文件内容
            while ((line = bufferedReader.readLine()) != null) {
                // 假设每行的格式为 使用;分割
                String[] parts = line.split(";");
                String courseid = parts[0].trim();
                String coursename = parts[1].trim();
                String lecturer = parts[2].trim();
                String classday = parts[3].trim();
                String begintime = parts[4].trim();
                String endtime = parts[5].trim();
                String maxNum = parts[6].trim();
                courseList.add(new Course(courseid,coursename,lecturer,classday,begintime,endtime,maxNum));
            }
            // 关闭流
            bufferedReader.close();
            fileReader.close();
        } catch (IOException e) {
            System.err.println("读取文件时出现错误: " + e.getMessage());
            e.printStackTrace();
        }
        return courseList;
    }


    /**
     * 读取学生文件
     * @return
     */
    public static List<Student> getFileStudentInfo(){
        List<Student> studentList = new ArrayList<>();
        // 定义文件路径
        String filePath = "src/studentInfo.txt";
        try {
            // 创建文件读取对象
            FileReader fileReader = new FileReader(filePath);
            // 创建缓冲读取对象
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            String line;
            // 逐行读取文件内容
            while ((line = bufferedReader.readLine()) != null) {
                // 假设每行的格式为 使用;分割
                String[] parts = line.split(";");
                String id = parts[0].trim();
                String name = parts[1].trim();
                String account = parts[2].trim();
                String password = parts[3].trim();
                String scoreclassid = parts[4].trim();
                studentList.add(new Student(id,name,account,password,scoreclassid));
            }
            // 关闭流
            bufferedReader.close();
            fileReader.close();
        } catch (IOException e) {
            System.err.println("读取文件时出现错误: " + e.getMessage());
            e.printStackTrace();
        }
        return studentList;
    }

    /**
     * 读取管理员文件
     * @return
     */
    public static List<Admin> getFileAdminInfo(){
        List<Admin> adminList = new ArrayList<>();
        // 定义文件路径
        String filePath = "src/adminInfo.txt";
        try {
            // 创建文件读取对象
            FileReader fileReader = new FileReader(filePath);
            // 创建缓冲读取对象
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            String line;
            // 逐行读取文件内容
            while ((line = bufferedReader.readLine()) != null) {
                // 假设每行的格式为 使用;分割
                String[] parts = line.split(";");
                String id = parts[0].trim();
                String name = parts[1].trim();
                String account = parts[2].trim();
                String password = parts[3].trim();
                adminList.add(new Admin(id,name,account,password));
            }
            // 关闭流
            bufferedReader.close();
            fileReader.close();
        } catch (IOException e) {
            System.err.println("读取文件时出现错误: " + e.getMessage());
            e.printStackTrace();
        }
        return adminList;
    }


    /**
     * 读取教授文件
     * @return
     */
    public static List<Professor> getFileProfInfo(){
        List<Professor> professorList = new ArrayList<>();
        // 定义文件路径
        String filePath = "src/profInfo.txt";
        try {
            // 创建文件读取对象
            FileReader fileReader = new FileReader(filePath);
            // 创建缓冲读取对象
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            String line;
            // 逐行读取文件内容
            while ((line = bufferedReader.readLine()) != null) {
                // 假设每行的格式为 使用;分割
                String[] parts = line.split(";");
                String id = parts[1].trim();
                String name = parts[0].trim();
                String account = parts[2].trim();
                String password = parts[3].trim();
                professorList.add(new Professor(id,name,account,password));
            }
            // 关闭流
            bufferedReader.close();
            fileReader.close();
        } catch (IOException e) {
            System.err.println("读取文件时出现错误: " + e.getMessage());
            e.printStackTrace();
        }
        return professorList;
    }



}
